﻿/**
 *	\file		dream.h
 *	\date		(2014-12-30 17:31:00)/(2014-12-30 17:31:00)
 *-----------------------------------------------------------------------------
 *	\brief
 *	\version	1.0.0.1
 *	\author		Nick Shallery	(nicknide@gmail.com)
 *	\copyright	YOU HAVE ALL LEFT WITH THIS CODE WHILE YOU KEEP COMMENT IN EVERY COPY.
 *-----------------------------------------------------------------------------
**/
#if			!defined(__LOLIX__SAMSARA__DREAM__H__NICK__K_IN_G__)
#define		__LOLIX__SAMSARA__DREAM__H__NICK__K_IN_G__

#if			!defined(__LOLIX__LOLIX_TYPE__K_IN_G__)
#	include	<lolix/lolix_type.h>
#endif	//	!defined(__LOLIX__LOLIX_TYPE__K_IN_G__)

namespace lxsamsara{class dream;}
class LOLIX_NO_VTABLE lxsamsara::dream
	: public lolix::itf
{
	LOLIX_DECLARE_ITF(lxsamsara::dream, lolix::itf, (0xd9f14cdc, 0xb2d14b7f, 0xbed8f500, 0xd2ecfb90));
public:
	/**
	* \brief	叫醒.
	*			将梦境唤醒，回到现实.
	* \remark	此函数不会返回，而是直接跳转到记录点的上下文.
	**/
	LOLIX_INTERFACE(awaken, void, (void)const);

	/**
	* \brief	打破.
	*			将梦境打破，回到现实.
	* \remark	将自己删除后,此函数不会返回,而是直接跳转到记录点的上下文.
	**/
	LOLIX_INTERFACE(broken, void, (void)const);

	/**
	* \brief	叫醒
	* \see		awaken
	* \remark	某些地方需要this_call的调用，因此追加此快捷接口
	**/
	LOLIX_INLINE_CALL void awaken_this(void){this->awaken();}
};


#endif	//	!defined(__LOLIX__SAMSARA__DREAM__H__NICK__K_IN_G__)
